package com.crawler.system.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * 爬虫任务实体类，用于数据库交互
 */
@Data
@TableName("crawler_task")
public class CrawlerTask {

    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 任务名称
     */
    private String name;

    /**
     * 任务描述
     */
    private String description;

    /**
     * 目标URL
     */
    private String targetUrl;

    /**
     * 爬虫类型 (1:基础网页爬取, 2:动态页面爬取, 3:分布式爬取, 4:网站监控)
     */
    private Integer type;

    /**
     * 爬取深度 (-1表示无限制)
     */
    private Integer depth;

    /**
     * 爬取范围 (DOMAIN:当前域名, ALL:所有链接)
     */
    private String scope;

    /**
     * 是否启用代理
     */
    private Boolean proxyEnabled;

    /**
     * 请求间隔(毫秒)
     */
    private Integer requestInterval;

    /**
     * 爬虫规则ID
     */
    private Long ruleId;

    /**
     * 任务配置(JSON格式)
     */
    private String config;

    /**
     * 状态 PENDING: 待处理, RUNNING: 运行中, PAUSED: 已暂停, COMPLETED: 已完成, FAILED: 已失败, STOPPED: 已停止
     */
    private String status;

    /**
     * 进度(0-100)
     */
    private Integer progress;

    /**
     * 错误信息
     */
    private String errorMessage;

    /**
     * 上次执行时间
     */
    private LocalDateTime lastExecuteTime;

    /**
     * 完成时间
     */
    private LocalDateTime completeTime;

    /**
     * 创建用户ID
     */
    private Long createdBy;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    private LocalDateTime updateTime;

    /**
     * 已爬取URL数量
     */
    private Integer crawledUrls;

    /**
     * 总URL数量
     */
    private Integer totalUrls;

    /**
     * 任务结果数量
     */
    private Integer resultCount;
} 
